echo "----关闭selinux----"
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
setenforce 0

sleep 1
echo "----关闭防火墙----"
systemctl stop firewalld
systemctl disable firewalld
#systemctl stop iptables
#systemctl disable iptables


sleep 1
#在CentOS 7中，NetworkManager成为默认服务但与传统network并存，建议在服务器环境中使用network，特别是需要精确控制网络配置的情况；而在云环境、容器平台或需要频繁切换网络的场景下，则推荐使用NetworkManager。资源消耗方面，提到network资源消耗较低，适合轻量级环境；而NetworkManager资源消耗相对较高，尤其在图形界面和多连接场景下。
# 宗上述原因，在 centos7中，我们选择关闭NetworkManager管理系统
# 在centos8中，则不能关闭，centos8 NetworkManager是官网唯一支持的网络管理系统
echo "----关闭NetworkManager管理系统----"
systemctl stop NetworkManager
systemctl disable NetworkManager

echo "----修改时区----"
timedatectl set-timezone Asia/Shanghai
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

sleep 1
# 目的在于减少失误操作导致的服务器重启
echo "----禁止使用Ctrl+Alt+Del重启----"
mv /usr/lib/systemd/system/ctrl-alt-del.target /usr/lib/systemd/system/ctrl-alt-del.target.bak
# 重新加载所有 unit 文件（如修改了服务配置）
systemctl daemon-reload  

sleep 1
echo "----修改字符编码----"
echo 'LANG="en_US.UTF-8"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"' > /etc/locale.conf

# 将ntp1.aliyun.com调整为内网时钟服务器
sleep 1
echo "----配置同步时间----"
ntpdate ntp1.aliyun.com
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1' >> /var/spool/cron/root



sleep 1
echo "----调整用户可用的最大进程数量，同时打开的文件描述符数量----"
cat >> /etc/security/limits.conf << EOF
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
EOF

sleep 1
echo "----Linux最大进程数最大进程数量----"
cat >> /etc/security/limits.d/20-nproc.conf << EOF
* soft nproc unlimited
* hard nproc unlimited
EOF


sleep 1
echo "----Linux系统所有进程共计可以打开的文件数量----"
cat >> /etc/sysctl.conf << EOF
fs.file-max = 65535
EOF

sleep 1
echo "----用户登录系统后打开文件数量----"
cat >> /etc/profile << EOF
ulimit -n 65535
EOF

sleep 1
echo "----配置ssh禁用反向解析----"
echo 'UseDNS=no' >> /etc/ssh/sshd_config
systemctl restart sshd



echo "-----修改用户可占用的最大内存大小----"
# 设置单个进程可创建的内存映射区域数量上限 
# 典型场景：
# Elasticsearch、MongoDB 等需要大量内存映射的数据库。
# JVM 应用（如 Hadoop、Kafka）使用内存映射文件（MMAP）时
sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >>/etc/sysctl.conf 
sysctl -p >/dev/null 2>&1

